// \u4e00-\u9fa5] 中文验证规则
import validate from 'wechat-validate'
Page({
  // 通过behaviors注入校验
  behaviors: [validate],
  rules: {
    name: [
      { required: true, message: '请填写业主姓名!' },
      { pattern: /^(?:[\u4e00-\u9fa5·]{2,16})$/, message: '请检查业主姓名是否正确!' },
    ],
    mobile: [
      { required: true, message: '请填写手机号码!' },
      { pattern: /^1\d{10}$/, message: '请检查手机号码是否正确!' },
    ],
    idcardFrontUrl: [{ required: true, message: '请上传身份证人像面!' }],
    idcardBackUrl: [{ required: true, message: '请上传身份证国徽面!' }],
  },
  data: {
    id: undefined, //发请求会自动过滤 undefined
    point: '',
    building: '',
    room: '',
    name: '',
    gender: 1,
    mobile: '',
    idcardFrontUrl: '',
    idcardBackUrl: '',
  },
  // 选择图片
  async chooseImg(e) {
    // 用wx自带choosemedia上传 type为image的图片
    console.log(e.mark.type);
    const { type } = e.mark
    const { tempFiles } = await wx.chooseMedia({
      count: 1,
      mediaType: ['image']
    })
    if (tempFiles[0].size > 1024 * 1024 * 1) {
      return wx.utils.toast('图片大小不能超过1M')
    }
    // 上传服务器 返回 服务器图片地址 回显页面
    const res = await wx.http.upload('/upload', {
      name: 'flie',
      filePath: tempFiles[0].tempFilePath
    })
    console.log(res);
    this.setData({
      // 对象插值运算 动态设置key
      [type]: res.data.url
    })
  },
  async submit() {
    // 验证码 rules 中定义的全部数据
    const isAllValid = this.validate()
    if (!isAllValid) {
      return
    }
    // 去除data不需要上传的
    const { __webviewId__, status, ...body } = this.data
    // console.log(body);
    const res = await wx.http.post('/room', body)
    // 服务器返回 id值
    console.log(res.data.id);
    // 回退四个页面 -- 房屋页面
    wx.navigateBack({ delta: body.id ? 2 : 4 })
  },
  removePicture(ev) {
    //移除图片的类型（身份证正面或反面）
    const type = ev.mark?.type
    this.setData({ [type]: '' })
  },
  onLoad({ point, building, room, id }) {
    // console.log(id);
    // 有id编辑
    if (id) {
      wx.setNavigationBarTitle({ title: '编辑房屋信息', })
      this.getEditInfo(id)
    } // 没id添加
    else {
      wx.setNavigationBarTitle({ title: '添加房屋信息', })
      this.setData({
        point, building, room
      })
    }
  },
  async getEditInfo(id) {
    const res = await wx.http.get(`/room/${id}`)
    this.setData(res.data)
  }
})
